﻿using System;
using personalplaner.common.mvvm;
using System.Collections.Generic;
using personalplaner.business.stamm;
using System.Collections.ObjectModel;

namespace personalplaner.gui.stamm.viewmodels.models
{
    public class PersonAbteilungModel : BaseModel
	{
        protected override string IsPropertyValid(string property)
        {
            if (property == "Pensum")
            {
                if (Pensum < 0)
                    return "Pensum darf nicht kleiner als 0 sein";
                if (Pensum > MaxPensum)
                    return "Das ausgewählte Pensum darf nicht grösser als das gesammte Pensum sein";
            }
            return base.IsPropertyValid(property);
        }



		int _maxPensum;
		public int MaxPensum
		{
			get { return _maxPensum; }
			set
			{
				_maxPensum = value;
				RaisePropertyChanged("MaxPensum");
			}
		}

        int _pensum;
        public int Pensum
        {
            get
            {
                return _pensum;
            }
            set
            {
                if (value <= MaxPensum)
                    _pensum = value;
                RaisePropertyChanged("Pensum");
            }
        }

		DateTime _von;
		public DateTime Von
		{
			get { return _von; }
			set
			{
				// set first day in month
				_von = new DateTime(value.Year, value.Month, 1);
				RaisePropertyChanged("Von");
			}
		}

		DateTime _bis;
		public DateTime Bis
		{
			get { return _bis; }
			set
			{
				// set last day in month
				_bis = new DateTime(value.Year, value.Month, DateTime.DaysInMonth(value.Year, value.Month));
				RaisePropertyChanged("Bis");
			}
		}

		IList<PersonAbteilung> _abteilungenZugeteilt;
        public IList<PersonAbteilung> AbteilungenZugeteilt
		{
			get
			{
				if (_abteilungenZugeteilt == null)
                    _abteilungenZugeteilt = new ObservableCollection<PersonAbteilung>();
				return _abteilungenZugeteilt;
			}
			set
			{
				_abteilungenZugeteilt = value;
				RaisePropertyChanged("AbteilungenZugeteilt");
			}
		}

        PersonAbteilung _selectedAbteilungZugeteilt;
        public PersonAbteilung SelectedAbteilungZugeteilt
        {
            get
            {
                return _selectedAbteilungZugeteilt;
            }
            set
            {
                _selectedAbteilungZugeteilt = value;
                RaisePropertyChanged("SelectedAbteilungZugeteilt");
            }
        }

        IList<PersonAbteilung> _abteilungenNichtZugeteilt;
        public IList<PersonAbteilung> AbteilungenNichtZugeteilt
		{
			get
			{
				if (_abteilungenNichtZugeteilt == null)
                    _abteilungenNichtZugeteilt = new ObservableCollection<PersonAbteilung>();
				return _abteilungenNichtZugeteilt;
			}
			set
			{
				_abteilungenNichtZugeteilt = value;
				RaisePropertyChanged("AbteilungenNichtZugeteilt");
			}
		}

        PersonAbteilung _selectedAbteilungNichtZugeteilt;
        public PersonAbteilung SelectedAbteilungNichtZugeteilt
        {
            get
            {
                return _selectedAbteilungNichtZugeteilt;
            }
            set
            {
                _selectedAbteilungNichtZugeteilt = value;
                RaisePropertyChanged("SelectedAbteilungNichtZugeteilt");
            }
        }


    }
}
